﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace JTLeigh.Commerce.Spencer.Features.ProductFeedback.Service.Contracts.Runtime.GetProductFeedbackSnapshot
{

	/// <summary>
	/// Response data contract for the <see cref="IProductFeedbackRuntimeService.GetProductFeedbackSnapshot"/>
	/// operation.
	/// </summary>
	[DataContract(Name = "GetProductFeedbackSnapshotRes", Namespace = "http://schemas.jtleigh.com/Commerce/Spencer/Features/ProductFeedback/1.0/Runtime/GetProductFeedbackSnapshot/")]
	public class GetProductFeedbackSnapshotResponse
	{

		#region Properties

		/// <summary>
		/// Gets or sets the product feedback snapshot.
		/// </summary>
		/// <value>A <see cref="ProductFeedbackSnapshot"/> object.</value>
		[DataMember(Name = "Snapshot", IsRequired = true)]
		public ProductFeedbackSnapshot Snapshot { get; set; }

		/// <summary>
		/// Gets or sets a dictionary of the product rating attributes relevant to the ratings for
		/// the specified product.
		/// </summary>
		/// <value>An <see cref="IDictionary{TKey,TValue}"/> of <see cref="ProductRatingAttribute"/>
		/// keyed by attribute identifier <see cref="Guid"/>.</value>
		[DataMember(Name = "RatingAttributes", IsRequired = true)]
		public IDictionary<Guid, ProductRatingAttribute> RatingAttributes { get; set; }

		/// <summary>
		/// Gets or sets a dictionary of the product recommendation attributes relevant to the 
		/// recommendations for the specified product.
		/// </summary>
		/// <value>An <see cref="IDictionary{TKey,TValue}"/> of <see cref="ProductRecommendationAttribute"/>
		/// keyed by attribute identifier <see cref="Guid"/>.</value>
		[DataMember(Name = "RecommendationAttributes", IsRequired = true)]
		public IDictionary<Guid, ProductRecommendationAttribute> RecommendationAttributes { get; set; }

		// NOTE: We don't need review atributes because we're only interested in quantitative values in the snapshot.

		#endregion // Properties

	}

}
